package cn.pro.syg;

import java.lang.reflect.Field;
import java.lang.reflect.Method;

public class AppReflect {
    public static void main(String[] args) throws Exception {
        Class<?> A = Class.forName("cn.pro.syg.Animal");
        Object o = A.newInstance();
        // getDeclaredFields ：通过类对象获取该类下所有的字段
        Field[] fields = A.getDeclaredFields();
        for (Field field : fields) {
            field.setAccessible(true);
            // getType ：获取某个字段的类型，得到的是该类型的类对象
            Class<?> type = field.getType();
            if(type.toString().endsWith("String")) {
                // 说明该字段是字符串
                field.set(o, "Timor");
            } else if (type.toString().endsWith("Integer")) {
                // 说明该字段是整数
                field.set(o, 2);
            } else if (type.toString().endsWith("Double")) {
                // 说明该字段是小数
                field.set(o, 3.14);
            }
        }

        Method say = A.getDeclaredMethod("say");
        say.invoke(o);

    }
}

